
#define POW(X,Y) _Generic((X),\
                          int:ipow,\
                          double:dpow,\
                          float:fpow)(X,Y)

int ipow(int a , int b)
{
  
}
float fpow(float a, float b)
{

}
double dpow(double a, double b)
{

}